_require local "./Char.smi"
_require       "./CharVector.smi"
_require       "./General.smi"
_require local "./SMLSharp_ScanChar.smi"
_require       "./StringCvt.smi"
_require local "./Substring.smi"

structure String =
struct
  val maxSize : int
  val size = SMLSharp_Builtin.String.size
  val explode : string -> char list
  val concatWith : string -> string list -> string
  val isPrefix : string -> string -> bool
  val isSuffix : string -> string -> bool
  val isSubstring : string -> string -> bool
  val translate : (char -> string) -> string -> string

  val sub = SMLSharp_Builtin.String.sub
  val extract : string * int * int option -> string
  val substring : string * int * int -> string
  val ^ : string * string -> string
  val concat = CharVector.concat
  val str : char -> string
  val implode = CharVector.fromList
  val map = CharVector.map
  val tokens : (char -> bool) -> string -> string list
  val fields : (char -> bool) -> string -> string list
  val compare : string * string -> General.order
  val collate = CharVector.collate
  val < : string * string -> bool
  val <= : string * string -> bool
  val > : string * string -> bool
  val >= : string * string -> bool
  val toString : string -> string
  val toRawString : string -> string
  val scan : (char, 'a) StringCvt.reader -> (string, 'a) StringCvt.reader
  val fromString : string -> string option
  val toCString : string -> string
  val fromCString : string -> string option
  type string = string
  type char = char
end
